/**
 *
 * @returns {Boolean} valid value
 *
 * @properties={typeid:24,uuid:"C8A4AFC8-6F77-470A-AAB9-6485ADCB1C21"}
 */
function tot_valores()
{
	if ((op_cabecera_to_op_detalle.importe == null) || (op_cabecera_to_op_detalle.importe == 0))
	{
		globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Importe",'OK')
		return false;
	}
	else
	{
		globals.gtotal_valores = 0
		for ( var i = 1 ; i <= op_cabecera_to_op_detalle.getSize(); i++ )
		{
			op_cabecera_to_op_detalle.setSelectedIndex(i)
			globals.gtotal_valores += op_cabecera_to_op_detalle.importe	
		}
		return true;
	}
}

/**
 *
 * @returns {Boolean} valid value
 *
 * @properties={typeid:24,uuid:"1BAEE4E8-4A34-4E31-B33A-5BEF96EA2CED"}
 */
function valor_elegido() 
{
	cuentas_cyb_id = null
	if (op_detalle_to_valores.es_cheque == 1) 
	{ // es cheque  
		if (op_detalle_to_valores.es_propio == 1)
		{
			if (fecha_emision_chq == null) // sugerir al dar alta la fecha del dia
			{
				var $hoy = application.getServerTimeStamp()
				$hoy.setHours(0,0,0,0)
				fecha_emision_chq = $hoy
			}
			if (op_detalle_to_valores.es_ch_difer == 0)
			// cheque propio no diferido poner fecha_emision=fecha_pago 
			{
				fecha_pago 	= fecha_emision_chq
				dias_pago 	= 0
			}
		}
		else
		{ 		// va a mostrar cheques de terceros con estado en caja y cuenta caja 
			globals.formEnVentana('opago_varios_20','cheques_ter','Elija los Cheques')
			tot_valores(); 
		}
	}
	else		
	{// es efectivo o transferencia   ->  pedir importe y cta
		if (op_detalle_to_valores.usa_cta_bco == 1)   
		{//es transferencia
			cheque_nro = '1'
		}  
		else
		{// es efectivo
			if (op_detalle_to_valores.es_tarjeta == 1)
			{ // es tarjeta
				var $hoy = application.getServerTimeStamp()
				$hoy.setHours(0,0,0,0)
				fecha_emision_chq 	= $hoy
				banco_sucursal 		= null
				banco_id 			= null
			}	
			else
			{// es efectivo
				banco_sucursal 	= null
				banco_id 		= null
			}  
		}
	}
	//Si no elige cheques en la pantalla pone el valor_id como null
	if (valor_id != null)
	{
		prepara_renglon()
		elements.importe.requestFocus(true)
	}
	return true
}

/**
 *
 * @properties={typeid:24,uuid:"9DCB1D29-4B2E-4262-90F1-22FC475B98A5"}
 */
function validar_importe() 
{
	if ((op_cabecera_to_op_detalle.importe == null) || (op_cabecera_to_op_detalle.importe == 0))
	{
		globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Importe",'OK')
		elements.importe.requestFocus(true)
		return false;
	}
	return true
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean} valid value
 *
 * @properties={typeid:24,uuid:"8200F254-A289-4A27-87CB-250F4D52A5BE"}
 */
function onDataChange_fecha_emision(oldValue, newValue, event) 
{
	if (op_detalle_to_valores.es_cheque == 1)
	{
		if (op_detalle_to_valores.es_ch_difer != 1)
		{
			fecha_pago = fecha_emision_chq
			elements.fecha_pago.enabled = false;
		}
		else  // 15/12/2010
		{ 
			elements.fecha_pago.enabled = true;
			calcula_fecha_pago();
		}
	}
	else //19/02/2011 para fecha pago en transferencia
	{
		if (op_detalle_to_valores.usa_cta_bco == 1)
		{
			fecha_pago = fecha_emision_chq
		}
	}
	return true
}

/**
 *
 * @properties={typeid:24,uuid:"717CA0A8-AEC8-4150-9428-7A84318543AC"}
 */
function prepara_renglon() 
{
	if (op_detalle_to_valores.es_cheque == 1)
	{ // es cheque   habilita ingreso de todos los campos
		if (op_detalle_to_valores.es_propio == 1)
		{// es propio
			globals.gcuentas_variable = 1
			var $fecha_pago = true
			var $dias_pago 	= true
			if (op_detalle_to_valores.es_ch_difer == 0)
			// cheque propio no diferido poner fecha_emision=fecha_pago 
			{
				$fecha_pago = false;
				$dias_pago 	= false;
			}
			habilitaCampos(true,true,true,true,$fecha_pago,$dias_pago)
			elements.importe.requestFocus(true)
		}
		else
		{ // es de terceros
			globals.gcuentas_variable = 0
			habilitaCampos(false,false,false,false,false,false)
		}
	}
	else		
	{// es efectivo o transferencia   pedir solo importe y cta  y nro transf.
		if (op_detalle_to_valores.usa_cta_bco == 1)
		{//es transferencia
			habilitaCampos(true,true,true,true,false,false)
			globals.gcuentas_variable = 1;         
		}
		else
		{// es efectivo
			if (op_detalle_to_valores.es_tarjeta == 1)
			{ // es tarjeta
				habilitaCampos(true,true,true,true,false,false)
				globals.gcuentas_variable = 2
				
			}	
			else
			{// es efectivo
				habilitaCampos(true,true,false,false,false,false)
				globals.gcuentas_variable = 0
			}
		}
	}
}

/**
 * @param {Boolean} imp
 * @param {Boolean} cuenta
 * @param {Boolean} cheque
 * @param {Boolean} fecha_em
 * @param {Boolean} fecha_pag
 * @param {Boolean} dias_pag
 *
 * @properties={typeid:24,uuid:"54F7054F-3B55-4AC0-ADD5-41B707BBCD8E"}
 */
function habilitaCampos(imp,cuenta,cheque,fecha_em,fecha_pag,dias_pag)
{
	elements.importe.enabled 			= imp;
	elements.cuenta_cyb_id.enabled 		= cuenta;
	elements.cheque_nro.enabled 		= cheque;
	elements.fecha_emision_chq.enabled 	= fecha_em; 
	elements.fecha_pago.enabled 		= fecha_pag;
	elements.dias_pago.enabled 			= dias_pag;
}

/**
 * Handle record selected.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"424774E0-0B28-4A58-BDD2-2CEDA825B3A4"}
 */
function onRecordSelected_detalle(event) 
{
	if(valor_id != null)
		prepara_renglon();
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean} valid value
 *
 * @properties={typeid:24,uuid:"ED4DC4C7-9ED0-44A2-98DC-68BF2AC87D1A"}
 */
function banco_propio(oldValue, newValue, event) 
{
	var estado = ver_saldo();
	if (estado == true)
	{
		if (op_detalle_to_valores.es_cheque == 1)
		{
			banco_sucursal = op_detalle_to_cuentas_cyb.descripcion;
			if(op_detalle_to_valores.es_propio == 1)
			{
				//para cheque propio poner banco_id de tabla cuentas_cyb en el detalle // 16/07/2010
				banco_id=op_detalle_to_cuentas_cyb.banco_id;
			}
		}
		return true;       
	}                  
	else               
	{                  
		return false;  
	}
}

/**
 *
 * @properties={typeid:24,uuid:"3B9C772C-B89A-4594-A2A7-E26AE5754329"}
 * @AllowToRunInFind
 */
function ver_saldo() 
{
// solo buscar saldo de caja cuando es efectivo // 20/07/2010
	if(op_cabecera_to_op_detalle.op_detalle_to_valores.usa_cta_bco==1) // 20/07/2010 es transferencia
			return true;
	if (op_cabecera_to_op_detalle.op_detalle_to_valores.es_cheque==1) // 20/07/2010 es  cheque
			return true;    
	
	// es efectivo: debe chequear saldo
	/** @type {JSFoundSet<db:/infocom/saldos_caja>}*/    
	var fs_saldos = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'saldos_caja')
	var estado = fs_saldos.find()
	if (estado == true)
	{
		fs_saldos.cuentas_cyb_id = cuentas_cyb_id;
		fs_saldos.moneda_id 	 = globals.zparam_moneda_default;
		var found = fs_saldos.search();
		if (found == 1)  
		{ // ver saldo existente 
	    	if (importe > fs_saldos.saldo_efectivo)
	    	{ // importe supera lo existente en caja
				globals.DIALOGS.showWarningDialog('Aviso','Efectivo a pagar de $' + importe + ' supera el saldo de la caja $' + fs_saldos.saldo_efectivo,'OK')
				return false;
	    	}
	    	else
	    		return true;
	    }
	    else
		{
	    	return false;
		}
	}
	else
	{
		return false;
	}    
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"5D913404-6D49-4C19-9631-9F4764551E1C"}
 */
function onDataChange_importe(oldValue, newValue, event) 
{	 // anterior al 28/07/2010
	if (cuentas_cyb_id == null)
	{
		var estado = tot_valores();
		if (estado == false)
			return false;
		else
		{
			elements.cuenta_cyb_id.requestFocus(true);
			return true;
		}
	}
	else
	{
		estado = ver_saldo();  //29/07/2010
		if (estado == true)
		{	
			estado = tot_valores();
			if (estado == false)
			{
				elements.importe.requestFocus(true);
				return false;
			}
		}
		else
		{
			elements.importe.requestFocus(true);
			return true
 		}
	}
	return true
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"5087CAE6-6A79-45D4-8A4D-32E28BCB88FC"}
 */
function onDataChange_cheque_nro(oldValue, newValue, event) //07/10/2010 
{
	globals.duplicacion_cheques(valor_id,banco_id,cheque_nro)
	if (globals.gfilas != 0)  // si es cero, no existe
	{ // ya existe , lo rechaza
		globals.DIALOGS.showWarningDialog('Aviso','Ya existe ' + op_detalle_to_valores.valor_descripcion + ' nro. ' + cheque_nro + ' de banco ' + op_detalle_to_cuentas_cyb.descripcion,'OK')
		return false;
	}
	if (op_detalle_to_valores.es_ch_difer == 1) // 16/12/2010  (todo el if como en opago_2)
	{
		elements.dias_pago.requestFocus(); // 16/12/2010
	}
	else  // cheque propio no deferido poner fecha_emision=fecha_pago  			
	{
		fecha_pago = application.getServerTimeStamp();
		elements.fecha_pago.enabled = false;
	}
	return true
}

/**
 * @properties={typeid:24,uuid:"F6DFE94B-C6D4-42C9-A03E-D7CDE4BDD0FA"}
 */
function calcula_fecha_pago() 
{
	if(op_detalle_to_valores.es_cheque == 1 && op_detalle_to_valores.es_propio==1 && op_detalle_to_valores.es_ch_difer == 1 )
	{
		if (dias_pago != null)
		{
			fecha_pago = fecha_emision_chq;  
			fecha_pago = fecha_pago.setDate (fecha_emision_chq.getDate() + dias_pago);
		}
		else
			elements.dias_pago.requestFocus();  
	}
}

/**
 * Handle focus element loosing focus.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"DF6E6122-E745-4B0C-A4DD-645597E2803E"}
 */
function onFocusLost_dias_pago(event) 
{  
	if (op_detalle_to_valores.es_cheque == 1) 
	{ // es cheque  
		if (op_detalle_to_valores.es_propio == 1) // es propio
		{
			if (op_detalle_to_valores.es_ch_difer == 1) 
			{ // es diferido
				if(dias_pago == null)
				{
					elements.dias_pago.requestFocus(); 
					return true
				}
				if(fecha_pago == null)
					return false
			}
		}
	}
	return true
}
